跳到主要内容

125 验证回文串

https://leetcode.cn/leetbook/read/top-interview-questions-easy/xne8id/

https://leetcode.cn/problems/valid-palindrome/description/

cost: 13m24s

class Solution {
public:
bool isPalindrome(string s) {
for (int i = 0, j = s.size() - 1; i < j;) {
char ch1 = s[i];
char ch2 = s[j];
if (!this->isAlpha(ch1) && !this->isNum(ch1)) {
i++;
continue;
}
if (!this->isAlpha(ch2) && !this->isNum(ch2)) {
j--;
continue;
}
if (!this->isEqualChar(ch1, ch2)) {
return false;
}
i++;
j--;
}
return true;
}

private:
bool isAlpha(char ch) {
if (ch >= 'a' && ch <= 'z') {
return true;
}
if (ch >= 'A' && ch <= 'Z') {
return true;
}
return false;
}
bool isNum(char ch) { return ch >= '0' && ch <= '9'; }
char toLower(char ch) {
if (ch >= 'A' && ch <= 'Z') {
return ch - 'A' + 'a';
}
return ch;
}
bool isEqualChar(char ch1, char ch2) {
if (ch1 == ch2) {
return true;
}
if (this->toLower(ch1) == this->toLower(ch2)) {
return true;
}
return false;
}
};
  • 时间复杂度:O(n)
  • 空间复杂度:O(1)